home *** CD-ROM | disk | FTP | other *** search
- 10 KEY 10,"EDIT ":KEY OFF
- 20 REM ============
- 30 REM AMORTIZE.BAS
- 40 REM MODIFIED FOR USE ON SANYO MBC 550 SERIES COMPUTER
- 50 REM BY George Vigneron 11-07-88
- 60 REM ============
- 65 DD$ = ""
- 70 CLEAR:U$="$$###,###.##":DIM MO$(12)
- 80 DATA Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
- 90 FOR X=1 TO 12:READ MO$(X):NEXT X
- 100 GOTO 140
- 110 A$=INKEY$:IF A$="" THEN 110
- 120 IF ASC(A$)>96 AND ASC(A$)<123 THEN A$=CHR$(ASC(A$)-32)
- 130 RETURN
- 140 CLS:DEF FNA(N9)=(1!-(R2+1!)^(-N9))/R2
- 150 DEF FNR(Z9)=ABS(.01*INT(Z9*100!+.5))
- 160 PRINT STRING$(79,205)
- 170 A$="Loan Amortization Program":LOCATE 2,40-(LEN(A$)/2)
- 180 PRINT A$
- 190 PRINT STRING$(79,205)
- 200 PRINT :PRINT"Do you wish a description ? Type (Y/N)"
- 220 GOSUB 110:LOCATE 8,1,0
- 230 IF A$="N" THEN 330
- 240 IF A$<>"Y" THEN LOCATE 1,1,1:GOTO 220
- 250 CLS
- 260 PRINT"This program computes mortgage loan values and"
- 270 PRINT"will print an amortization schedule given any"
- 280 PRINT"three of the four loan values:"
- 290 PRINT"1) Intrest rate"
- 300 PRINT"2) Monthly payment"
- 310 PRINT"3) Life of the loan"
- 320 PRINT"4) Amount of the loan"
- 330 PRINT :PRINT"Enter values for ";
- 340 PRINT"3 of the ";
- 350 PRINT"4 following inputs"
- 360 PRINT"and a zero for the one you wish computed...."
- 370 PRINT :INPUT"Amount of the loan"; A2
- 380 A2=ABS(A2)
- 390 INPUT"Monthly payment"; P2
- 400 P2=ABS(P2)
- 410 PRINT"Intrest rate (e.g. 5 1/4% would be 5.25)";
- 420 INPUT R2
- 430 A3=ABS(R2):R2=A3/1200
- 440 PRINT"Life of the loan (e.g. 8 years 2 months would be 8.02)";
- 450 INPUT L1
- 460 L1=ABS(L1):Y2=INT(L1):M2=INT(100*(L1-Y2) +.9)
- 470 PRINT"Enter date of 1st. payment (MMYYYY)";
- 480 INPUT MA$
- 490 MA=VAL(LEFT$(MA$,2))
- 500 YA=VAL(RIGHT$(MA$,2))
- 510 IF MA<1 OR MA>12 THEN 470
- 520 IF M2<12 THEN 550
- 530 PRINT"Invalid input-Try Again!"
- 540 GOTO 440
- 550 CLS:N2=12*Y2+M2
- 560 K3=0
- 570 IF R2<>0 THEN 590
- 580 K3=K3+1
- 590 IF P2<>0 THEN 610
- 600 K3=K3+1
- 610 IF N2<>0 THEN 630
- 620 K3=K3+1
- 630 IF A2<>0 THEN 650
- 640 K3=K3+1
- 650 IF K3=1 THEN 690
- 660 PRINT
- 670 PRINT"Sorry, I don't know which one to compute."
- 680 GOTO 330
- 690 PRINT
- 700 PRINT
- 710 IF R2=0 THEN 930
- 720 IF A2=0 THEN 1160
- 730 IF P2=0 THEN 1200
- 740 IF P2*FNA(1)<=A2 THEN 770
- 750 PRINT" ","Life of the loan is less than 1 month!"
- 760 GOTO 330
- 770 FOR N1=1 TO 9999 STEP 12
- 780 A1=P2*FNA(N1)
- 790 IF A1>A2 THEN 820
- 800 IF A1=A2 THEN 870
- 810 NEXT N1
- 820 J=N1-11
- 830 FOR N2=J TO N1
- 840 A1=P2*FNA(N2)
- 850 IF A1>=A2 THEN 880
- 860 NEXT N2
- 870 N2=N1
- 880 Y2=INT(N2/12)
- 890 M2=INT(N2-12*Y2)
- 900 PRINT" ","Loan period is";:PRINT Y2
- 910 PRINT"years ;PRINT M2;PRINT" MONTHS."
- 920 GOTO 1240
- 930 IF P2*N2>=A2 THEN 970
- 940 PRINT" ,Loan can not be repaid at"
- 950 PRINT USING U$;P2;:PRINT"a month."
- 960 GOTO 330
- 970 X=0
- 980 IF P2*N2<=A2 THEN 1120
- 990 FOR I=1 TO 9999
- 1000 R2=I/1200
- 1010 A1=P2*FNA(N2)
- 1020 IF A1<A2 THEN 1070
- 1030 IF A1<>A2 THEN 1060
- 1040 X=I
- 1050 GOTO 1120
- 1060 NEXT I
- 1070 X=I-.99
- 1080 X=X+.001
- 1090 R2=X/1200
- 1100 A1=P2*FNA(N2)
- 1110 IF A1-.00001*A2>A2 THEN 1080
- 1120 R2=X/1200
- 1130 A3=.001*INT(1000*(X+.0005))
- 1140 PRINT" ","Annual intrest rate is";:PRINT A3;:PRINT"%"
- 1150 GOTO 1240
- 1160 A2=P2*FNA(N2)
- 1170 A8=FNR(A2)
- 1180 PRINT" ","Amount of loan is";:PRINT USING U$;A8
- 1190 GOTO 1210
- 1200 P2=A2/FNA(N2)
- 1210 P8=FNR(P2)
- 1220 PRINT"Monthly payment is";
- 1230 PRINT USING U$; P8
- 1240 I2=P8*N2-A2
- 1250 PRINT"Total intrest on loan is";
- 1260 PRINT USING U$; FNR(I2)
- 1270 PRINT :PRINT
- 1280 PRINT"Do you wish an amortization schedule ? Type (";
- 1290 PRINT"Y/N)"
- 1300 GOSUB 110
- 1310 IF A$="Y" THEN 1390
- 1320 IF A$<>"N" THEN 1300
- 1330 PRINT"Another analysis ? Type (Y/N)"
- 1340 GOSUB 110
- 1350 IF A$="Y" THEN PRINT :GOTO 330
- 1360 IF A$<>"N" THEN 1340
- 1370 CLS:PRINT"E N D M O R G A G E"
- 1380 END
- 1390 PRINT
- 1400 PRINT"Type 1";
- 1410 PRINT" for annual table, ";
- 1420 PRINT"2 for monthly table."
- 1430 GOSUB 110:K2=VAL(A$)
- 1440 IF K2<1 OR K2>2 THEN 1430
- 1450 PRINT :PRINT"Direct output to <S";
- 1460 PRINT">creen or <P";
- 1470 PRINT">rinter":GOSUB 110:CLOSE
- 1480 IF A$="S" THEN ZZ = 1
- 1490 IF A$="P" THEN ZZ = 2
- 1500 CLS
- 1504 IF ZZ = 1 THEN PRINT STRING$(79,"=")
- 1508 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
- 1510 A$="*** Mortgage Table ***"
- 1520 IF ZZ = 1 THEN PRINT TAB(40-(LEN(A$)/2)) A$
- 1530 IF ZZ = 2 THEN LPRINT TAB(40-(LEN(A$)/2)) A$
- 1540 IF ZZ = 1 THEN PRINT STRING$(79,"=")
- 1550 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
- 1560 A8=FNR(A2)
- 1570 IF ZZ = 1 THEN PRINT "Amount of loan";
- 1574 IF ZZ = 1 THEN PRINT USING U$;A8;
- 1580 IF ZZ = 2 THEN LPRINT "Amount of loan";
- 1587 IF ZZ = 2 THEN LPRINT USING U$;A8;
- 1590 IF ZZ = 1 THEN PRINT TAB(50)"Annual intrest rate";
- 1600 IF ZZ = 2 THEN LPRINT TAB(50)"Annual intrest rate";
- 1610 IF ZZ = 1 THEN PRINT A3;
- 1620 IF ZZ = 2 THEN LPRINT A3;
- 1630 IF ZZ = 1 THEN PRINT "%"
- 1640 IF ZZ = 2 THEN LPRINT "%"
- 1650 P8=FNR(P2)
- 1660 IF ZZ = 1 THEN PRINT "Monthly payment";
- 1665 IF ZZ = 2 THEN LPRINT "Monthly payment";
- 1670 IF ZZ = 1 THEN PRINT USING U$; P8
- 1675 IF ZZ = 2 THEN LPRINT USING U$; P8
- 1680 IF ZZ = 1 THEN PRINT TAB(50)"Repaid in";
- 1685 IF ZZ = 2 THEN LPRINT TAB(50)"Repaid in";
- 1690 IF ZZ = 1 THEN PRINT Y2;
- 1695 IF ZZ = 2 THEN LPRINT Y2;
- 1700 IF ZZ = 1 THEN PRINT "years";
- 1705 IF ZZ = 2 THEN LPRINT "years";
- 1710 IF ZZ = 1 THEN PRINT M2;
- 1715 IF ZZ = 2 THEN LPRINT M2;
- 1720 IF ZZ = 1 THEN PRINT "months"
- 1725 IF ZZ = 2 THEN LPRINT "months"
- 1730 IF ZZ = 1 THEN PRINT "Total interest";
- 1735 IF ZZ = 2 THEN LPRINT "Total interest";
- 1740 IF ZZ = 1 THEN PRINT USING U$; FNR(I2)
- 1745 IF ZZ = 2 THEN LPRINT USING U$; FNR(I2)
- 1750 IF ZZ = 1 THEN PRINT"Press any key to get amorization schedule."ELSE GOTO 1780
- 1760 GOSUB 110
- 1770 CLS
- 1780 GOSUB 2640
- 1790 M=0:E=0:DEC=1900
- 1800 K=0:K1=0:K3=0
- 1810 A1=A2:MA=MA-1:YA=YA+DEC
- 1820 T1=0:PL=0
- 1830 T2=0
- 1840 FOR J=1 TO N2
- 1850 K1=K1+1:K=K+1
- 1860 MA=MA+1:P9=P9+P8
- 1870 IF MA>12 THEN MA=MA-12:YA=YA+1:IF YA>DEC+100 THEN DEC=DEC+100
- 1880 X7=FNR(A1*R2)
- 1890 P7=P2-X7
- 1900 IF P7<=A1 THEN 1920
- 1910 P7=A1
- 1920 T1=T1+X7
- 1930 T2=T2+P7
- 1940 A1=A1-P7
- 1950 IF K2=1 THEN 2060
- 1960 IF P7+X7=0 THEN 2080
- 1970 D1=FNR(A1)
- 1980 D2=FNR(P7)
- 1990 D3=FNR(X7)
- 2000 IF ZZ = 1 THEN PRINT TAB(1)MO$(MA);" '";STR$(YA);"->";
- 2005 IF ZZ = 2 THEN LPRINT TAB(1)MO$(MA);" '";STR$(YA);"->";
- 2010 IF ZZ = 1 THEN PRINT TAB(16) DD$;: PRINT USING U$;D1;
- 2015 IF ZZ = 2 THEN LPRINT TAB(16) DD$;: LPRINT USING U$;D1;
- 2020 IF ZZ = 1 THEN PRINT TAB(32) DD$;: PRINT USING U$;P8;
- 2025 IF ZZ = 2 THEN LPRINT TAB(32) DD$;: LPRINT USING U$;P8;
- 2030 IF ZZ = 1 THEN PRINT TAB(48) DD$;: PRINT USING U$;D2;
- 2035 IF ZZ = 2 THEN LPRINT TAB(48) DD$;: LPRINT USING U$;D2;
- 2040 IF ZZ = 1 THEN PRINT TAB(64) DD$;: PRINT USING U$;D3
- 2045 IF ZZ = 2 THEN LPRINT TAB(64) DD$;: LPRINT USING U$;D3
- 2050 PL=PL+1
- 2060 IF MO$(MA)="Dec" THEN K1=12:GOTO 2080
- 2070 IF K<12 THEN 2260
- 2080 M=M+1
- 2090 IF A1+T1+T2=0 THEN 2200
- 2100 D1=FNR(A1)
- 2110 D2=FNR(T2)
- 2120 D3=FNR(T1)
- 2130 IF K2=2 THEN IF ZZ = 1 THEN PRINT STRING$(79,"-")
- 2135 IF K2=2 THEN IF ZZ = 2 THEN LPRINT STRING$(79,"-")
- 2140 IF ZZ = 1 THEN PRINT TAB(1)YA;"Totals";
- 2145 IF ZZ = 2 THEN LPRINT TAB(1)YA;"Totals";
- 2150 IF ZZ = 1 THEN PRINT TAB(16) DD$;: PRINT USING U$; D1;
- 2155 IF ZZ = 2 THEN LPRINT TAB(16) DD$;: LPRINT USING U$; D1;
- 2160 IF ZZ = 1 THEN PRINT TAB(32) DD$;: PRINT USING U$; P9;
- 2165 IF ZZ = 2 THEN LPRINT TAB(32) DD$;: LPRINT USING U$; P9;
- 2170 IF ZZ = 1 THEN PRINT TAB(48) DD$;: PRINT USING U$; D2;
- 2175 IF ZZ = 2 THEN LPRINT TAB(48) DD$;: LPRINT USING U$; D2;
- 2180 IF ZZ = 1 THEN PRINT TAB(64) DD$;: PRINT USING U$; D3;
- 2185 IF ZZ = 2 THEN LPRINT TAB(64) DD$;: LPRINT USING U$; D3;
- 2190 IF K2=2 AND ZZ = 1 THEN PRINT STRING$(79,"-")
- 2195 IF K2=2 AND ZZ = 2 THEN LPRINT STRING$(79,"-")
- 2200 PL=PL+1
- 2210 T1=0:T2=0:P9=0
- 2220 K=0:K3=K3+1
- 2230 IF ZZ = 1 AND K2=2 AND K1>11 THEN GOSUB 2440
- 2240 IF ZZ = 1 AND K2=1 AND K3>14 THEN GOSUB 2440
- 2250 IF ZZ = 2 AND PL>30 THEN PL=0:LPRINT CHR$(12):GOSUB 2640
- 2260 NEXT J:IF K2=1 OR MO$(MA)="Dec" THEN 2380
- 2270 D1=FNR(A1)
- 2280 D2=FNR(T2)
- 2290 D3=FNR(T1)
- 2300 LOCATE 20,1
- 2305 IF ZZ = 1 THEN PRINT STRING$(79,"-")
- 2310 IF ZZ = 2 THEN LPRINT STRING$(79,"-")
- 2320 IF ZZ = 1 THEN PRINT TAB(1)YA;"Totals";
- 2325 IF ZZ = 2 THEN LPRINT TAB(1)YA;"Totals";
- 2330 IF ZZ = 1 THEN PRINT TAB(16) DD$;: PRINT USING U$; D1;
- 2335 IF ZZ = 2 THEN LPRINT TAB(16) DD$;: LPRINT USING U$; D1;
- 2340 IF ZZ = 1 THEN PRINT TAB(32) DD$;: PRINT USING U$; P9;
- 2345 IF ZZ = 2 THEN LPRINT TAB(32) DD$;: LPRINT USING U$; P9;
- 2350 IF ZZ = 1 THEN PRINT TAB(48) DD$;: PRINT USING U$; D2;
- 2355 IF ZZ = 2 THEN LPRINT TAB(48) DD$;: LPRINT USING U$; D2;
- 2360 IF ZZ = 1 THEN PRINT TAB(64) DD$;: PRINT USING U$; D3;
- 2365 IF ZZ = 2 THEN LPRINT TAB(64) DD$;: LPRINT USING U$; D3;
- 2370 IF ZZ = 2 THEN LPRINT STRING$(79,"-")
- 2375 IF ZZ = 1 THEN PRINT STRING$(79,"-")
- 2380 IF ZZ = 2 THEN LPRINT CHR$(12):GOTO 1330
- 2390 LOCATE 23,1:PRINT SPC(79);:LOCATE 24,1
- 2400 PRINT"Press ";
- 2410 PRINT CHR$(17)+CHR$(196)+CHR$(217);:PRINT" to continue";
- 2420 A$=INKEY$:IF A$="" THEN 2420
- 2430 CLS:GOTO 1330
- 2440 LOCATE 23,19
- 2450 PRINT "Press "; CHR$(17)+CHR$(196)+CHR$(217);
- 2460 PRINT " to continue, <M> for Menu "
- 2480 A$=INKEY$:IF A$="" THEN 2480
- 2490 IF ASC(A$)=13 THEN K1=0:K3=0:GOTO 2590
- 2500 IF A$="M" OR A$="m" THEN 2510 ELSE GOTO 2480
- 2510 LOCATE 23,1:PRINT SPC(79):LOCATE 24,1:PRINT SPC(79):LOCATE 23,19
- 2520 PRINT"Compute another Amorization Schedule (Y/N)"
- 2550 GOSUB 110
- 2560 IF A$="Y" THEN CLS:GOTO 330
- 2570 IF A$<>"N" THEN 2550
- 2580 GOTO 1370
- 2590 IF K2=2 THEN COL=22
- 2600 IF K2=1 THEN COL=20
- 2610 IF J=N2 THEN 2380
- 2620 FOR X=7 TO COL:LOCATE X,1
- 2624 IF ZZ = 1 THEN PRINT SPACE$(79);
- 2626 IF ZZ = 2 THEN LPRINT SPACE$(79);
- 2628 NEXT X
- 2630 LOCATE 7,1:RETURN
- 2640 IF ZZ = 1 THEN PRINT STRING$(79,"="):A$="Amorization schedule"
- 2645 IF ZZ = 2 THEN LPRINT STRING$(79,"="):A$="Amorization schedule"
- 2650 IF ZZ = 1 THEN PRINT TAB(40-(LEN(A$)/2)) A$
- 2655 IF ZZ = 2 THEN LPRINT TAB(40-(LEN(A$)/2)) A$
- 2660 IF ZZ = 1 THEN PRINT STRING$(79,"=")
- 2665 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
- 2670 IF ZZ = 1 THEN PRINT TAB(1)"Payment";TAB(19)" Ending";
- 2675 IF ZZ = 2 THEN LPRINT TAB(1)"Payment";TAB(19)" Ending";
- 2680 IF ZZ = 1 THEN PRINT TAB(37)"Payment";TAB(52)"Principal";TAB(69)"Interest"
- 2685 IF ZZ = 2 THEN LPRINT TAB(37)"Payment";TAB(52)"Principal";TAB(69)"Interest"
- 2690 IF ZZ = 1 THEN PRINT TAB(1)"Date";TAB(19)"Principal";
- 2695 IF ZZ = 2 THEN LPRINT TAB(1)"Date";TAB(19)"Principal";
- 2700 IF ZZ = 1 THEN PRINT TAB(37)"Amount";TAB(52)" Paid";TAB(69)" Paid"
- 2705 IF ZZ = 2 THEN LPRINT TAB(37)"Amount";TAB(52)" Paid";TAB(69)" Paid"
- 2710 IF ZZ = 1 THEN PRINT STRING$(79,"=")
- 2715 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
- 2720 RETURN
- )" Paid";TAB(69)" Paid"
- 2710 IF ZZ = 1 THEN PRINT STRING$(79,"=")
- 2715 IF